feat(core): migrate every persistent setting into the property catalog - #21
Merged
Merged
Conversation
Every persistent setting the interface edits now has one registration in the
property catalog: a stable id, a schema that states its own bounds, a tier, and
a typed read/edit path. The panels stop carrying their own widgets and render
catalog rows instead, so search, the modified marker, reset, multi-target
editing and automation all follow from the same declaration.
Migrated: the dataset processing recipe, canvas and document settings, plot
object settings, and application preferences.
Value model
- One float schema. `Float { bounds, display, drag_step }` replaces a boolean
log flag plus a free-standing unit, so a control can no longer show one
numeric space while labelling another. The `log10` prefix is derived from the
display rather than repeated by each definition: the contour base level had
been editing an exponent under a bare "intensity" caption.
- A text schema and text value, which costs the value type its `Copy`.
- A derived default policy, for defaults that come from a rebuilt artifact
rather than a factory or a literal.
- Absence stays modelled as a discriminator plus a disabled dependent, as phase
already did. No nullable value enters the catalog.
Second state sources removed
- Object snapping, the canvas accent and the project backup count each had a
session mirror synchronised in both directions. Saving a project wrote the
stale mirror back over the settings, so an edit could silently revert. The
mirrors are gone and the readers use the settings directly.
- A plot object's figure and the axis presentation derived from it are private
and can only be replaced together, so a rebuild cannot leave the recorded
derivation behind.
Behaviour
- The group-delay switch takes effect for 2D data; the correction had been
applied to the direct dimension whatever the switch said.
- Clearing Auto bins seeds the count from the current data's Freedman-Diaconis
result.
- Migrated rows keep the visibility they had, and several units and captions
that disagreed with the value beside them are corrected.
Automation
- The property tools reach application, document, canvas, object, series and
processing-step settings.
- A reading carries its availability, the reason it is disabled, whether it was
modified, and a schema whose float form states its display projection. Unit
and log restate that projection. Clients that switch exhaustively on schema
types must handle text and stepped integers.
Panel budget
- The per-section budget counts the rows a user can see at once rather than the
rows a section declares, sharing the applicability predicate with the
providers instead of restating it. Every section stays within six.
No project or settings file format changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every persistent setting the interface edits now has one registration in the
property catalog: a stable id, a schema that states its own bounds, a tier, and
a typed read/edit path. The panels stop carrying their own widgets and render
catalog rows instead, so search, the modified marker, reset, multi-target
editing and automation all follow from the same declaration.
Covered: the dataset processing recipe, canvas and document settings, plot
object settings, and application preferences.
No project or settings file format changes. The catalog was adapted to the
existing domain types throughout; that is what makes a single change of this
size reviewable.
Behaviour changes worth release notes
applied to the direct dimension whatever the switch said.
Freedman–Diaconis result.
corrected — most visibly the contour base level, which was editing a base-10
exponent under a bare "intensity" caption.
Migrated rows otherwise keep the visibility they had.
Automation contract
The property tools now reach application, document, canvas, object, series and
processing-step settings.
The inspection wire format grows additively — a reading carries its
availability, the reason it is disabled, whether it was modified, and a schema
whose float form states its display projection (
unitandlogrestate thatprojection and are kept for compatibility). Clients that switch exhaustively
on schema types must handle the two new ones,
textandstepped_int.Second state sources removed
session mirror synchronised in both directions. Saving a project wrote the
stale mirror back over the settings, so an edit could silently revert.
and can only be replaced together, so a rebuild cannot leave the recorded
derivation behind.
Deliberately left out
Recorded as constraints rather than half-built: enum variants minted at runtime
(chart column, attached projection sources), per-region and per-integral
component addressing, the per-monitor UI scale map, MRU and user-collection
settings, and axis range overrides. Two fields with no editor today
(
SeriesBindinglabel, panel note font size) are not migrated either, sinceadding a control the product never had is not a migration.
Panel budget
The per-section budget counts the rows a user can see at once rather than the
rows a section declares, sharing the applicability predicate with the providers
instead of restating it. Every section stays within six.
Verification
cargo pr-checkpasses all seven steps;npm run buildindocs/builds all67 pages. Test count 1183 → 1292.